home *** CD-ROM | disk | FTP | other *** search
- /*
- WASTE Demo Project:
- Drag Handlers
-
- Copyright ゥ 1993-1996 Marco Piovanelli
- All Rights Reserved
-
- C port by John C. Daub
- */
-
- #ifndef __WEDEMOAPP__
- #include "WEDemoIntf.h"
- #endif
-
- // static variables for the drag handlers UPPs
-
- static DragTrackingHandlerUPP sMyTrackingHandlerUPP = nil;
- static DragReceiveHandlerUPP sMyReceiveHandlerUPP = nil;
-
- static pascal OSErr MyTrackingHandler( DragTrackingMessage message, WindowRef window, void *refCon, DragReference drag )
- {
- #pragma unused (refCon)
-
- DocumentHandle hDocument;
-
- if ( ( window != nil ) && ( ( hDocument = GetWindowDocument( window ) ) != nil ) )
- {
- return WETrackDrag( message, drag, (*hDocument)->we );
- }
-
- return noErr;
- }
-
- static pascal OSErr MyReceiveHandler( WindowRef window, void *refCon, DragReference drag )
- {
- #pragma unused (refCon)
-
- DocumentHandle hDocument;
-
- if ( ( window != nil ) && ( ( hDocument = GetWindowDocument( window ) ) != nil ) )
- {
- return WEReceiveDrag( drag, (*hDocument)->we );
- }
-
- return noErr;
- }
-
- OSErr InstallDragHandlers( void )
- {
- OSErr err;
-
- sMyTrackingHandlerUPP = NewDragTrackingHandlerProc( MyTrackingHandler );
- sMyReceiveHandlerUPP = NewDragReceiveHandlerProc( MyReceiveHandler );
-
- if ( ( err = InstallTrackingHandler( sMyTrackingHandlerUPP, nil, nil ) ) != noErr )
- {
- return err;
- }
-
- if ( ( err = InstallReceiveHandler( sMyReceiveHandlerUPP, nil, nil ) ) != noErr )
- {
- return err;
- }
-
- return noErr;
- }
-
- OSErr RemoveDragHandlers( void )
- {
- OSErr err;
-
- if ( ( err = RemoveTrackingHandler( sMyTrackingHandlerUPP, nil ) ) != noErr )
- {
- return err;
- }
- if ( ( err = RemoveReceiveHandler( sMyReceiveHandlerUPP, nil ) ) != noErr )
- {
- return err;
- }
-
- return noErr;
- }
-